草庐IT

Python float - str - 浮点怪异

全部标签

c++ - 如何将浮点算法转换为定点算法?

在阅读了大量关于定点运算的内容之后,我想我可以说我已经了解了基础知识,不幸的是我还不知道如何转换使用sin/cos/sqrt或任何其他fp函数的例程。考虑这个简单的mcve:#include#include#include#include#includetypedefcharS8;typedefshortS16;typedefintS32;typedefunsignedcharU8;typedefunsignedshortU16;typedefunsignedintU32;typedeffloatF32;typedefdoubleF64;//--------Fixedpointhelp

c++ - x86_64 上 2 的快速浮点幂

有没有快速取2.0的方法达到某种浮点程度x?我的意思是比pow(2.0,x)更快的东西最好使用AVX2进行矢量化处理。整数对应的是1,但它适用于整数n仅。 最佳答案 有一个标准std::exp2(doublen)Computes2raisedtothegivenpowern在特定环境下exp2(x)可能不会比pow(2.0,x)快,但它比一般的pow更具体。 关于c++-x86_64上2的快速浮点幂,我们在StackOverflow上找到一个类似的问题: ht

c++ - 什么可能导致确定性过程产生浮点错误

已阅读此question我有理由相信,使用具有相同输入(在相同硬件上,使用相同编译器编译)的浮点算术的给定过程应该是确定性的。我正在查看一个不正确的案例,并试图确定可能导致这种情况的原因。我已经编译了一个可执行文件并且我正在为它提供完全相同的数据,在一台机器上运行(非多线程)但是我得到了大约3.814697265625e-06的错误,经过仔细的谷歌搜索我发现实际上是等于1/4^9=1/2^18=1/262144。这非常接近32位float的精度级别(根据维基百科,大约为7位数)我怀疑它与已应用于代码的优化有关。我正在使用英特尔C++编译器并将浮点推测转换为快速而不是安全或严格。这会使浮

C++ 确保浮点大小为 4 个字节

我需要一种跨架构的方法来确保float为4个字节(在32位Windows上也是如此)。例如,在我正在创建的结构中,我使用__int32而不是int来确保一个4字节长的整数值。我怎么能用float做到这一点?我知道我可以用__int32类型替换该值;但是,在64位系统上转换为float时,我不会遇到问题吗? 最佳答案 Ineedacross-architecturewaytoensurethatafloatwillbe4bytesint32_t没有用于浮点值的模拟。实现您想要的唯一跨平台方法是使用运行时或静态断言对其进行测试。#inc

c++ - 你能全局设置 qDebug() 浮点精度和数字格式吗?

我想使用qDebug()、qInfo()等具有自定义默认浮点精度和数字格式的函数。有没有办法在全局范围内定义它?想象一下:doublenum=1.2;qDebug()现在我想避免每次写数字时使用QString::number(num,'f',2)并且更愿意使用标准的精度和格式。 最佳答案 QDebug流的格式化canbecontrolled通过QTextStreammanipulators.因此,你必须调用qDebug()在程序的开头。但是请注意,qDebug()的格式化状态可能会在以后发生变化,如果一些(不是很仔细编写的)代码集需

c++ - C++ 中是否有等效的 str_replace?

在PHP中,有一个str_replace基本上执行查找和替换的功能。在C++中是否有此函数的等效项? 最佳答案 不完全是,但看看BoostStringAlgorithmsLibrary-在本例中为replacefunctions:std::stringstr("aabbaadd");boost::algorithm::replace_all(str,"aa","xx");str现在包含"xxbbxxdd"。 关于c++-C++中是否有等效的str_replace?,我们在StackOve

c++ - 编译器之间的浮点不匹配(Visual Studio 2010 和 GCC)

我正在尝试解决一个突然出现的跨平台问题,但我不太确定该怎么做。这是一个演示程序:#include#includeintmain(){intxm=0x3f18492a;floatx=*(float*)&xm;x=(sqrt(x)+1)/2.0f;printf("%f%x\n",x,*(int*)&x);}在VS2010中编译时在Windows上的输出是:0.8856383f62b92a使用GCC4.8.1编译时的输出(ideone.comsample)是:0.8856383f62b92b在需要在多个平台上以相同方式运行的程序过程中,这些小的不匹配最终会膨胀成一个严重的问题。我不太关心“准

c++ - 浮点值作为 C++ 数组中的索引

浮点值可以用作数组的索引吗?如果用作索引的表达式的结果是浮点值,会发生什么情况? 最佳答案 float值将被转换为int(它可以根据编译器的警告级别给出警告或错误)s1=q[12.2];//sameasq[12]s2=q[12.999999];//sameasq[12]s3=q[12.1/6.2];//sameasq[1] 关于c++-浮点值作为C++数组中的索引,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

c++ - 浮点值在发布和调试版本中表现不同

当我在Release模式和Debug模式下编译我的应用程序时,它会生成不同的浮点值。我发现的唯一原因是我保存了一个二进制跟踪日志,而发布版本中的日志与调试版本中的日志稍有不同,看起来32位浮点值的底部两位大约有1/2的差异的情况下。您会认为这种“差异”是一个错误,还是这种类型的差异是意料之中的。这是编译器错误还是内部库错误。例如:LEFTPOSandSPACINGaredefinedfloatingpointvalues.floatdef_x;intxpos;def_x=LEFTPOS+(xpos*(SPACING/2));问题与X360编译器有关。 最佳答

c++ - 将字节缓冲区 (0-255) 转换为浮点缓冲区 (0.0-1.0)

如何将字节缓冲区(从0到255)转换为浮点缓冲区(从0.0到1.0)?当然这两个值之间应该是有关系的,例如:bytebuffer中的0在floatbuffer中为.0.f,bytebuffer中的128在floatbuffer中为.5f,bytebuffer中的255在floatbuffer中为1.ffloat缓冲区。实际上这是我的代码:for(inty=0;y这运行得非常慢。我的一个friend建议我使用转换表,但我想知道是否有人可以给我另一种方法。 最佳答案 无论您是否选择使用查找表,您的代码都会在每个循环迭代中做很多实际上不需